Python: Why can't I use `super` on a class?
Posted
by
cool-RR
on Stack Overflow
See other posts from Stack Overflow
or by cool-RR
Published on 2011-01-13T22:49:09Z
Indexed on
2011/01/13
22:53 UTC
Read the original article
Hit count: 398
Why can't I use super
to get a method of a class's superclass?
Example:
Python 3.1.3
>>> class A(object):
... def my_method(self): pass
>>> class B(A):
... def my_method(self): pass
>>> super(B).my_method
Traceback (most recent call last):
File "<pyshell#2>", line 1, in <module>
super(B).my_method
AttributeError: 'super' object has no attribute 'my_method'
(Of course this is a trivial case where I could just do A.my_method
, but I needed this for a case of diamond-inheritance.)
According to super
's documentation, it seems like what I want should be possible. This is super
's documentation: (Emphasis mine)
super()
-> same assuper(__class__, <first argument>)
super(type)
-> unbound super object
super(type, obj)
-> boundsuper
object; requiresisinstance(obj, type)
super(type, type2) -> bound super object; requires issubclass(type2, type)
[non-relevant examples redacted]
© Stack Overflow or respective owner